-- 保证比较锁和删除锁的原子性的lua脚本
-- 根据KEYS[1]的值,获取锁的标识值
local lock_id = redis.call('get', KEYS[1])
if not lock_id then
    -- 如果锁不存在，直接返回0表示获取锁失败
    return 0
end

-- 根据锁的标识值,判断是否有其他线程持有锁
if lock_id == ARGV[1] then
    -- 如果当前线程持有锁,则释放锁
    local result = redis.call('del', KEYS[1])
    if result == 1 then
        -- 成功删除锁
        return 1
    else
        -- 删除锁失败，可能是锁已被其他线程释放
        return 0
    end
else
    -- 如果其他线程持有锁,则返回0表示获取锁失败
    return 0
end




     --如果键 KEYS[1] 存在并且成功删除，redis.call('del', KEYS[1]) 将返回 1。
     --如果键 KEYS[1] 不存在，redis.call('del', KEYS[1]) 将返回 0。

